package gestion;

import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.JOptionPane;

import dao.DaoAlquilerBicicleta;
import dao.DaoAlquilerMaterialDeportivo;
import dao.DaoMaterialDeportivo;
import dao.DaoSocio;
import dominio.Alquilerbicicleta;
import dominio.Alquilermaterialdeportivo;
import dominio.AlquilermaterialdeportivoId;
import dominio.Materialdeportivo;
import dominio.Socio;
import excepciones.DAOExcepcion;

public class MaterialesDeportivos {

	private DaoMaterialDeportivo daoMaterialDeportivo = new DaoMaterialDeportivo();
	private DaoAlquilerMaterialDeportivo daoAlquilerMaterialDeportivo = new DaoAlquilerMaterialDeportivo();

	private ArrayList<Materialdeportivo> listaMaterialesDeportivos = new ArrayList<Materialdeportivo>();
	private ArrayList<Alquilermaterialdeportivo> listaAlquileres = new ArrayList<Alquilermaterialdeportivo>();

	
	public boolean comprobarMaterialDeportivoNuevoEsCorrecto(Materialdeportivo materialDeportivo) {
		if (materialDeportivo.getIdmaterialdeportivo() != 0
				&& materialDeportivo.getNombre().length() != 0
				&& materialDeportivo.getTipo() != -1
				&& materialDeportivo.getEstado().length() != 0)
			return true;
		else {
			JOptionPane error = new JOptionPane();
			error.showMessageDialog(null, "Faltan campos por rellenar", "Error", JOptionPane.ERROR_MESSAGE);
			return false;
		}
	}
	
	public boolean anadirMaterialDeportivo(Materialdeportivo materialDeportivo) throws DAOExcepcion {
		// TODO Auto-generated method stub
		daoMaterialDeportivo.anadirMaterialDeportivo(materialDeportivo);
		return true;
	}

	public boolean comprobarMaterialDeportivoExiste(int id) throws DAOExcepcion {
		listaMaterialesDeportivos = daoMaterialDeportivo.recuperarMaterialDeportivo(id);
		if (listaMaterialesDeportivos.size() != 0) {
			return true;
		}		
		return false;
	}
	
	public Materialdeportivo recuperarMaterialDeportivo(int id) throws DAOExcepcion {
		listaMaterialesDeportivos = daoMaterialDeportivo.recuperarMaterialDeportivo(id);
		Materialdeportivo materialdeportivo = new Materialdeportivo();
		Iterator it = listaMaterialesDeportivos.iterator();
		while (it.hasNext()) {
			materialdeportivo = (Materialdeportivo) it.next();
		}		
		return materialdeportivo;
	}
	
	public ArrayList recuperarMaterialDeportivo() throws DAOExcepcion {
		listaMaterialesDeportivos = daoMaterialDeportivo.ListarMaterialDeportivo();
		return listaMaterialesDeportivos;
	}
	
	public ArrayList recuperarMaterialDeportivoDisponible() throws DAOExcepcion {
		Alquilermaterialdeportivo alquiler = new Alquilermaterialdeportivo();
		
		listaMaterialesDeportivos = daoMaterialDeportivo.ListarMaterialDeportivo();
		listaAlquileres = daoAlquilerMaterialDeportivo.ListarAlquileresMaterialDeportivo();
		
		Iterator it = listaAlquileres.iterator();
		while (it.hasNext()) {
			alquiler = (Alquilermaterialdeportivo) it.next();
			if(listaMaterialesDeportivos.contains(alquiler.getMaterialdeportivo())){
				listaMaterialesDeportivos.remove(alquiler.getMaterialdeportivo());
			}
		}		
		
		return listaMaterialesDeportivos;
	}

}
